#include <REGX52.H>
#include "OneWire.h"

//DS18B20指令
#define DS18B20_SKIP_ROM			0xCC
#define DS18B20_CONVERT_T			0x44
#define DS18B20_READ_SCRATCHPAD 	0xBE

 /**
  * 函    数：DS18B20开始温度变换
  * 参    数：无
  * 返 回 值：无
  */
void DS18B20_ConvertT(void)
{
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_CONVERT_T);
}

/**
 * 函    数：DS18B20读取温度
 * 参    数：无
 * 返 回 值：温度数值
 */
float DS18B20_ReadT(void)
{
	unsigned char TLSB,TMSB;
	int Temp;
	float T;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_READ_SCRATCHPAD);
	TLSB=OneWire_ReceiveByte();	//先接受低位
	TMSB=OneWire_ReceiveByte();	//在接受高位
	Temp=(TMSB<<8)|TLSB;		//高位和低位组合为1个数
	T=Temp/16.0;				//低4位为小数 等同于Temp*0.0625
	return T;
}
